/* ================================================================================
//	Crypteviant!
//	Providing tough encrypted P2P Chat
//	Copyright (C) 2010  Martin Pfeifer, Tobias Rausch
//
//	This program is free software: you can redistribute it and/or modify
//	it under the terms of the GNU General Public License as published by
//	the Free Software Foundation, either version 3 of the License, or
//	(at your option) any later version.
//
//	This program is distributed in the hope that it will be useful,
//	but WITHOUT ANY WARRANTY; without even the implied warranty of
//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//	GNU General Public License for more details.
//
//	You should have received a copy of the GNU General Public License
//	along with this program.  If not, see <http://www.gnu.org/licenses/>.
// ============================================================================== */

#ifndef TESTENTROPYPOOLDATA_HPP
#define TESTENTROPYPOOLDATA_HPP

#include <QObject>
#include <QtTest/QtTest>

#include "entropypool.hpp"
#include "sha.h"

using namespace RandomPool;

class TestEntropyPoolData : public QObject
{
    Q_OBJECT

private slots:
    /**
     * @brief Data function to create test data
     * @details This function is automatically called befor testAddingData will be executed.\n
     * A table with test data will be set up which can be used in the test function later.
     *
     * @fn testAddingData_data()
    */
    void testAddingData_data();

    /**
     * @brief Test adding data to the storage
     * @details This test will add data to the storage and check all conditions after that
     *
     * @fn testAddingData()
    */
    void testAddingData();

    /**
     * @brief Test an empty instance of the data storage
     * @details Check if all initial conditions are met
     *
     * @fn testEmptyData()
    */
    void testEmptyData();

    /**
     * @brief Wait for new data to be added to the storage
     * @details Check if Threads are woken up after new data is added
     *
     * @fn testWaitForData()
    */
    void testWaitForData();

};

#endif // TESTENTROPYPOOLDATA_HPP
